Systems and methods for setting up internet protocol communications

ABSTRACT

A proxy server of an Internet protocol (IP) telephony system determines when a call setup message generated by a first of the IP telephony system&#39;s customers is directed to a second of the IP telephony system&#39;s customers. When that occurs, the call setup message is forwarded directly to a call cluster operated by the IP telephony system and that services the second customer. As a result, the call is handled internally by the IP telephony system, and there is no need to involve a second telephony system in conducting the requested call. The proxy server may also insert information into the call setup messaging to flag the call as an internal call between two customers of the IP telephony system.

BACKGROUND OF THE INVENTION

The invention is related to Internet protocol (IP) telephony systems.More specifically, the invention is related to systems and methods forsetting up new telephony communications for a customer of an IPtelephony system.

An IP telephony system stores user and account information in variousdatabases. The account information could be for a single user's account,for a family account that includes multiple users, or for a businessaccount that also includes multiple users. As the IP telephony systemadds additional users and accounts, the databases that store user andaccount information also grow. As more and more information is added tothose databases, it eventually makes sense, or becomes necessary, toseparate a single large database into two or more smaller databases.However, once this occurs, it can create problems with connecting callsbetween two users of the IP telephony system. The problems that canoccur when a single database of user or account information is separatedinto two or more separate databases is described below in connectionwith FIGS. 1 and 2.

FIG. 1 depicts a communications environment which includes an IPtelephony system 130 that operates to connect calls for its customers.The IP telephony system 130 includes a single call cluster 131 that iscoupled to an inbound proxy server 132 and an outbound proxy server 134.The IP telephony system 130 also includes a billing unit 136 thatreceives call detail records (CDRs) from elements that are part of theIP telephony system 130, and from elements outside the IP telephonysystem 130. The billing unit 136 uses information in the CDRs to billthe users of the IP telephony system 130, and to bill other telephonysystems for completing calls to users of the IP telephony system 130.

The IP telephony system 130 includes a call cluster 131 that acts tosetup outgoing and incoming calls for customers. The call cluster 131makes use of an inbound proxy server 132 to receive incoming calls fromthird party telephony systems, and an outbound proxy server 134 to setupoutgoing calls that are to be handled by third party telephony systems.The call cluster 131, the inbound proxy server 132 and the outboundproxy server 134 are all coupled to a data network 150, such as theInternet. In some instances, elements of the call cluster 131 may bedirectly coupled to the inbound proxy server 132 and/or the outboundproxy server 134. In other instances, elements of the call cluster 131may communicate with the inbound proxy server 132 and the outbound proxyserver 134 only via data communications passing through a data network150 such as the Internet.

The inbound proxy server 132 and the outbound proxy server 134 are alsocoupled to one or more third party telephony systems 140, such as apublically switched telephone network (PSTN), a cellular telephonysystem, or another Internet protocol telephony system. The inbound proxyserver 132 and the outbound proxy server 134 may be directly connectedto one or more third party telephony systems, or they may communicatewith other telephony systems via a data network 150 such as theInternet.

The third party telephony systems 140 are connected to customertelephony devices, which can include an analog telephony device 160 thatis coupled to a PSTN, a cellular telephone 162 that communicates througha cellular telephony system, and a smartphone that communicates througha cellular telephony system. The smartphone 164 may also be capable ofestablishing a wireless data connection to a data network 150, such asthe Internet, via a wireless router. Such a wireless data connectioncould make it possible for the smartphone 164 to establish and conducttelephone calls through an Internet protocol telephony system via datacommunications passing over the Internet 150.

FIG. 1 also shows that users of the IP telephony system 130 130 existunder two different accounts. A first account 110 includes two IPtelephony devices 112, 114. The two IP telephony devices 112, 114 areable to receive incoming calls or place outgoing calls through the callcluster 131. The two IP telephony devices 112, 114 communicate with thecall cluster 131 via a data network 150 such as the Internet. The two IPtelephony devices 112, 114 could be co-located in a building or within abusiness. However, because the IP telephony devices 112, 114 communicatevia a data network connection, the IP telephony devices 112, 114 couldbe located anywhere so long as they can connect to the data network 150.

The second account 120 includes three IP telephony devices 122, 124,126. Here again, the three IP telephony devices 122, 124, 126communicate via a data network connection, and thus can be locatedanywhere that they can connect to the data network.

The first and second accounts 110, 120 could represent two differentbusinesses that have established accounts with the IP telephony system130. In other instances, one or both of the accounts could represent afamily that has multiple telephony devices. Typically, however, thebilling for an account would be consolidated and sent to a centrallocation.

Although FIG. 1 only shows two accounts, in fact an IP telephony system130 could service a large number of different accounts, and each accountcould have a large number of IP telephony devices. Thus, FIG. 1 is onlyintended to provide a high level depiction of the elements involved insuch a communications environment.

The call cluster 131 includes databases with information about each ofthe accounts, and each of the IP telephony devices used by each account.Elements of the call cluster 131 directly communicate with the IPtelephony devices used by customers to setup outgoing telephonycommunications and to setup incoming telephony communications directedto the customers' IP telephony devices.

When a customer wishes to setup a telephony communication that isdirected to a telephony device that does not belong to one of one of theaccounts serviced by the IP telephony system 130, the telephonycommunication is sent through a third party telephony system 140. Forexample, if a user of the first IP telephony device 112, which is partof the first account 110, requests the setup of a telephone call to theanalog telephony device 160, the call setup request is first passed fromthe IP telephony device 112 to a controller, such as a session bordercontroller, of the call cluster 131. The controller checks to see if thecall setup request is directed to another IP telephony device that ispart of an account serviced by the IP telephony system 130. In thiscase, because the analog telephony device 160 is not part of an accountserviced by the IP telephony system 130, the controller determines thatthe call setup request must be sent to another telephony system in orderto be routed to the correct telephony device.

The controller of the call cluster 131 forwards the call setup requestto the outgoing proxy server 134 for connection to the analog telephonydevice 160. The outbound proxy server 134 passes the call setup requestto an appropriate third party telephony system, such as a PSTN 140, andthe PSTN 140 ultimately forwards the call to the analog telephony device160. Because the IP telephony system must enlist the aid of a thirdparty telephony system to complete the requested call, the IP telephonysystem 130 will likely have to pay that third party telephony system tosetup and complete the requested call to the analog telephony device160. For this reason, the IP telephony system 130 may charge the firstaccount 110 for setting up and carrying the requested call. In someinstances, however, the cost of the requested call may be covered by amonthly fee paid by the first account 110.

When a user's IP telephony device requests the setup of a telephonycommunication that is directed to a telephony device that is part of oneof the accounts serviced by the IP telephony system 130, a significantlydifferent call flow results. For example, if a user of the first IPtelephony device 112, which is part of the first account 110, requeststhe setup of a telephone call to the first IP telephony device 122 ofthe second account 120, the call setup request is first passed from theIP telephony device 110 to the controller of the call cluster 131. Thecontroller checks to see if the call setup request is directed toanother IP telephony device that is part of an account serviced by theIP telephony system 130, and discovers that this is the case. Thecontroller causes a server of the call cluster 131 to setup the call tothe first IP telephony device 122 of the second account 120 as an IPcall. In this case, the IP telephony system 130 is able to setup andcarry the call without the assistance of a third party telephony system.As a result, the IP telephony system 130 does not need to pay a thirdparty in order to setup and carry the requested call. For this reason,the IP telephony system 130 may not charge the first account 110 forsetting up and carrying the call.

When a party with a telephony device that is not serviced by the IPtelephony system 130 wishes to setup a telephony communication to an IPtelephony device that is serviced by the IP telephony system, thecommunication is also routed though the call cluster 131. Thecommunication is first received from one of the third party telephonysystems 140 by the inbound proxy server 132. The inbound proxy server132 forwards the communication to the call cluster 131. The call cluster131 then acts to route the call to the IP telephony device thatcorresponds to the dialed telephone number. The communication is thenhandled by a server of the call cluster, which sets up the telephonycommunication to the appropriate IP telephony device.

As mentioned above, as the IP telephony system 130 grows and addsadditional accounts with additional users, the databases within the callcluster 131 become larger. At some point in time, it becomes desirableor necessary to split a single large database into two smallerdatabases. When this occurs, the IP telephony system will create a new,second call cluster with its own databases, controllers and servers forrouting and carrying calls. The first call cluster ends up servicing afirst subset of all the accounts, and the second call cluster ends upservicing a second subset of all the accounts. The databases in thefirst call cluster only include information about the accounts and IPtelephony devices in the first subset, and the databases in the secondcall cluster only include information about the accounts and IPtelephony devices in the second subset.

When a second call cluster is added to an IP telephony system asdescribed above, and other changes to the basic structure are not made,it can cause various problems in routing calls to the IP telephonydevices of users of the IP telephony system, as described below.

FIG. 2 depicts a communications environment similar to the one in FIG.1, except that a second call cluster 137 and an associated inbound proxyserver 138 and outbound proxy server 139 have been added to the IPtelephony system. Also, a third account 170 with IP telephony devices172, 174 has been added. FIG. 2 depicts the communications environmentafter enough new users and/or accounts have been added by the IPtelephony system 130 that it became necessary to split the user andaccount databases in the original call cluster 131 into two separatedatabases. When that split occurs, the databases that remain in thefirst call cluster 131 have information about only the first account 110and the second account 120, and the IP telephony devices 112, 114, 122,124, 126 in those accounts. The databases in the second call cluster 137have information about only the third account 170 and the IP telephonydevices 172, 174 in that third account 170. The IP telephony devices inthe first and second accounts 110, 120 all communicate with the firstcall cluster 131 to place outgoing calls, and to receive incoming calls.The IP telephony devices in the new third account 170 communicate withthe second call cluster 137 to place outgoing calls and to receiveincoming calls.

When the IP telephony system 130 is configured as depicted in FIG. 2,outgoing calls placed by IP telephony devices serviced by the IPtelephony system 130, and which are directed to telephony devices thatare not serviced by the IP telephony system 130, are handled insubstantially the same manner as similar calls are handled by the systemas depicted in FIG. 1. However, as will be explained below, when a userof an IP telephony device serviced by the IP telephony system 130 sendsa telephony communication to another telephony device that is servicedby the IP telephony system 130, the call could be handled quitedifferently than it would be by the system depicted in FIG. 1.

For example, if a user of the first IP telephony device 112 of the firstaccount 110 places a call to the IP telephony device 172 that is part ofthe third account, the IP telephony device 112 will sent a call setupmessage to the first call cluster 131. The first call cluster 131 checksits databases to determine if the called telephony device is listed inthe databases. In this case, because the called IP telephony device 172is serviced by the second call cluster 137, information about the IPtelephony device 172 will not be present in the databases within thefirst call cluster 131. For this reason, the first call cluster 131sends the call setup message to the first outbound proxy server 134, andthe first outbound proxy server 134 sends the call to a third partytelephony system 140 for connection to the called telephony device. Thethird party telephony system 140 routes the call to the second inboundproxy server 138 associated with the second call cluster 137. The secondinbound proxy server 138 forwards the call setup message to the secondcall cluster 137. A controller of the second call cluster 137 thenlocates information about how to reach the IP telephony device 172 inits databases, and a server of the second call cluster 137 sends thecall to the IP telephony device 172.

When a call is handled as described above, it is necessary to involve athird party telephony system in routing the call to the called telephonydevice, even though the call is originating from and terminating to IPtelephony devices serviced by the IP telephony system 130. This meansthe IP telephony system 130 will be forced to pay a third party to routethe call to one of its own customers, which is highly undesirable. Itwould be far preferable if a call originating from and terminating to IPtelephony devices serviced by the IP telephony system 130 could berouted by elements of the IP telephony system 130 alone, so that it isnot necessary to involve third party telephony systems.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of a first communications environment that includesan Internet protocol (IP) telephony system having a single call clusterfor routing telephony communications;

FIG. 2 is a diagram of a second communications environment that includesan Internet protocol (IP) telephony system having two call clusters forrouting telephony communications;

FIG. 3 is a diagram of a communications environment that includes an IPtelephony system embodying the invention having two call clusters forrouting telephony communications;

FIG. 4 is a diagram illustrating various elements of a carrier proxyserver that is configured to route telephony communications to and froma call cluster of an IP telephony system;

FIG. 5 is a diagram of various elements of a processor that forms partof an IP telephony system, a call cluster, and/or a carrier proxyserver;

FIG. 6 illustrates steps of a method performed by a carrier proxy serverfor routing communication setup messaging received from a call cluster;

FIG. 7 illustrates steps of another method performed by a carrier proxyserver for routing call setup messaging received from a call cluster;and

FIG. 8 illustrates steps of another method performed by a carrier proxyserver for routing call setup messaging received from a call cluster.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

The following detailed description of preferred embodiments refers tothe accompanying drawings, which illustrate specific embodiments of theinvention. Other embodiments having different structures and operationsdo not depart from the scope of the present invention.

In the following description, the terms VOIP system, VOIP telephonysystem, IP system and IP telephony system are all intended to refer to asystem that connects callers and that delivers data, text or videocommunications using Internet protocol data communications.

References to an “IP telephony device” appear in both the foregoing andfollowing descriptions. This term is used to refer to any type of devicewhich is capable of interacting with an IP telephony system to conduct acommunication. An IP telephony device could be an IP telephone, acomputer running IP telephony software, a telephone adapter which isconnected to an analog telephone, or some other type of device capableof communicating via data packets. An IP telephony device could also bea cellular telephone or a portable or tablet computing device that runsa software client that enables the device to act as an IP telephone.Thus, a single device might be capable of operating as both a cellulartelephone and an IP telephony device.

Moreover, certain devices that are not traditionally used as telephonydevices may act as telephony devices once they are configured withappropriate client software. Thus, some devices that would not normallybe considered telephony devices may become telephony devices or IPtelephony devices once they are running appropriate software. Oneexample would be a desktop or a laptop computer that is running softwarethat can interact with an IP telephony system over a data network toconduct telephone calls. Another example would be a portable computingdevice, such as an Apple iPod Touch™, which includes a speaker and amicrophone. A software application loaded onto an Apple iPod Touch™ canbe run so that the Apple iPod Touch™ can interact with an IP telephonysystem to conduct a telephone call.

The foregoing and following descriptions also refer to telephonycommunications and telephony activity. These terms are intended toencompass all types of telephony communications, regardless of whetherall or a portion of the communications are carried in an analog ordigital format. Telephony communications could include audio or videotelephone calls, facsimile transmissions, text messages, SMS messages,MMS messages, video messages, and all other types of telephony and datacommunications sent by or received by a user. These terms are alsointended to encompass data communications that are conveyed through aPSTN or VOIP telephony system. In other words, these terms are intendedto encompass any communications whatsoever, in any format, whichtraverse all or a portion of a communications network or telephonynetwork.

As mentioned above in the background section of the application, userand/or account information is stored in call clusters of an IP telephonysystem that are responsible for helping to setup new telephonycommunications for telephony devices serviced by the IP telephonysystem. When multiple call clusters are present in the IP telephonysystem, each call cluster services a subset of all the telephony devicesserviced by the IP telephony system. The databases within a call clusteronly include information about the telephony devices and accounts thatare serviced by that call cluster. As also explained above, this cancause difficulties in routing telephony communications between twotelephony devices that are both serviced by the IP telephony system, butwhich are serviced by different call clusters.

One way of overcoming the problems described above is to use a differenttype of proxy server to route telephony communications to and from thecall clusters of an IP telephony system. For purposes of the followingdescription, the new type of proxy server is called a carrier proxyserver. A single carrier proxy server replaces both the inbound proxyserver and the outbound proxy server that are usually associated with acall cluster.

FIG. 3 depicts a communications environment which includes an IPtelephony system 130 that includes two call clusters. A first callcluster 131 is associated with a first carrier proxy server 141, and asecond call cluster 137 is associated with a second carrier proxy server147. The first call cluster 131 services the IP telephony devices 112,114, 122, 124, 126 of the first account 110 and the second account 120.The second call cluster 137 services the IP telephony devices 172, 174of the third account 170. How the carrier proxy servers 141 and 147 actto help route telephony communications for the call clusters will bedescribed in detail below.

FIG. 4 illustrates elements of a carrier proxy server 400. The carrierproxy server 400 includes an inbound communication handling unit 402that receives inbound call setup requests from third party telephonysystems. An outbound communication handling unit 404 routes call setuprequests to third party telephony systems. A source determining unit 406is configured to determine if a communication setup request originatedfrom a telephony device that is serviced by the IP telephony system 130,or if it originated from a telephony device serviced by a third partytelephony system. A destination determining unit 408 is configured todetermine the correct call cluster to which a communication setuprequest should be routed. The carrier proxy server 400 also includesvarious databases and caches 410 that help the other elements of thecarrier proxy server 400 to perform their various functions. This caninclude one or more databases that cross-reference telephone numbers oftelephony devices to the call clusters that serve those telephonydevices.

FIG. 5 illustrates elements of a computer processor 250 that can be usedas part of an IP telephony system 130, a call cluster, a carrier proxyserver, or a telephony device to accomplish various functions. An IPtelephony system 130, a call cluster and/or a carrier proxy server couldinclude multiple processors 250 located at various locations, along withtheir operating components and programming, each carrying out a specificor dedicated portion of the functions performed by those elements.

The processor 250 shown in FIG. 5 may be one of any form of a generalpurpose computer processor used in accessing an IP-based network, suchas a corporate intranet, the Internet or the like. The processor 250comprises a central processing unit (CPU) 252, a memory 254, and supportcircuits 256 for the CPU 252. The processor 250 also includes provisions258/260 for connecting the processor 250 to customer equipment, toservice provider equipment, to and IP network or gateways, as well aspossibly one or more input/output devices (not shown) for accessing theprocessor and/or performing ancillary or administrative functionsrelated thereto. The provisions 258/260 are shown as separate busstructures in FIG. 5; however, they may alternately be a single busstructure without degrading or otherwise changing the intendedoperability of the processor 250.

The memory 254 is coupled to the CPU 252. The memory 254, orcomputer-readable medium, may be one or more of readily available memorysuch as random access memory (RAM), read only memory (ROM), floppy disk,hard disk, flash memory or any other form of digital storage, local orremote, and is preferably of non-volatile nature. The support circuits256 are coupled to the CPU 252 for supporting the processor in aconventional manner. These circuits include cache, power supplies, clockcircuits, input/output circuitry and subsystems, and the like.

A software routine 262, when executed by the CPU 252, causes theprocessor 250 to perform processes of the disclosed embodiments, and isgenerally stored in the memory 254. The software routine 262 may also bestored and/or executed by a second CPU (not shown) that is remotelylocated from the hardware being controlled by the CPU 252. Also, thesoftware routines could also be stored remotely from the CPU. Forexample, the software could be resident on servers and memory devicesthat are located remotely from the CPU, but which are accessible to theCPU via a data network connection.

The software routine 262, when executed by the CPU 252, transforms thegeneral purpose computer into a specific purpose computer that performsone or more functions of the IP telephony system 120, an applicationcluster 300 or an IP telephony device. Although the processes of thedisclosed embodiments may be discussed as being implemented as asoftware routine, some of the method steps that are disclosed thereinmay be performed in hardware as well as by a processor running software.As such, the embodiments may be implemented in software as executed upona computer system, in hardware as an application specific integratedcircuit or other type of hardware implementation, or a combination ofsoftware and hardware. The software routine 262 of the disclosedembodiments is capable of being executed on any computer operatingsystem, and is capable of being performed using any CPU architecture.

FIG. 6 illustrates steps of a method that would be performed by acarrier proxy server when it receives a communication setup request froma call cluster. The fact that the call cluster has forwarded thecommunication setup request to the carrier proxy server means that thecommunication is directed to a telephony device that is not served bythe call cluster. If the communication was directed to another telephonydevice serviced by the call cluster, elements of the call cluster itselfwould have routed the communication to the appropriate telephony device.This means that the communication is either directed to a telephonydevice that is serviced by the IP telephony system, but by a differentcall cluster of the IP telephony system, or that the communication isdirected to a telephony device that is serviced by the third partytelephony system.

The method 600 begins and proceeds to step S602 where the carrier proxyserver receives a communication setup request from a first call cluster.In step S604, the carrier proxy server determines if the communicationis directed to a customer of the IP telephony system. This could beaccomplished by consulting a database that lists the telephone numbersof telephony devices serviced by the IP telephony system. If thetelephone number of the telephony device to which the communication isdirected appears in the database, then the communication is directed toa customer of the IP telephony system. If the telephone number does notappear in the list, then the communication is directed to a telephonydevice that is not serviced by the IP telephony system.

If the result of step S604 is a determination that the communicationsetup request is directed to a telephony device that is not serviced bythe IP telephony system, the method proceeds to step S608, and thecommunication setup request is directed to a third party telephonysystem that is capable of sending the communication setup request to thecorrect telephony device. If the result of step S604 is a determinationthat the communication is directed to a telephony device serviced by theIP telephony system, the method proceeds to step S606, and thecommunication setup request is sent to the call cluster that servicesthe telephony device to which the communication setup request isdirected. Performing step S606 may require that the carrier proxy serveridentity the correct call cluster to which the communication setuprequest should be sent. This could include consulting a database thatcross-references the telephone numbers of telephony devices serviced bythe IP telephony system to the call clusters that service thosetelephony devices. That database could be the same database used in stepS604 to determine if the communication setup request is directed to atelephony device serviced by the IP telephony system, or it could be adifferent database. The method would then end.

The database(s) that are used to accomplish steps S604 and S606 of thismethod could be a resident in a cache on the carrier proxy server, orthe database(s) could be located on a different device entirely. It isadvantageous to have the database(s) present in a cache on the carrierproxy server, as this would allow for a very fast determination of thecorrect information.

The method described above and illustrated in FIG. 6 ensures thatcommunications originating from a telephony device serviced by the IPtelephony system and directed to another telephony device serviced bythe IP telephony system are handled internally by the IP telephonysystem. In other words, it is not necessary to involve a third partytelephony service provider to route or carry the communication. This istrue even when the two telephony devices involved in the communicationare serviced by different call clusters.

As mentioned above, when a communication is between two telephonydevices that are serviced by the same IP telephony system, and thecommunication is handled internally by the IP telephony system, thecustomers may not be charged for the communication. For this to occur,however, the billing system of the IP telephony system must be able todifferentiate between communications which are between two IP telephonydevices serviced by the IP telephony system, and communications whichinvolve a telephony device that is not serviced by the IP telephonysystem.

Whenever the various elements of the IP telephony system help to setupor carry a telephony communication, the elements may generate a calldetail record (CDR) that is forwarded to a billing unit of the telephonysystem. The billing unit collects all the CDRs that are generated inconnection with a communication, and uses the information in those CDRsto determine who to bill for the communication, and how much to bill forthe communication. Because the billing system uses the information inCDRs to determine who and how much to bill, it is advantageous if theCDRs include some information that identifies those communications thatwere between only two telephony devices serviced by the IP telephonysystem. This allows the billing system to avoid billing any party for acommunication that was between two telephony devices serviced by the IPtelephony system.

FIG. 7 illustrates a method that is performed by a carrier proxy serverto help route a new communications between two telephony devices servedby the IP telephony system, and which also results in information beinginserted into the CDRs generated by key elements of the system to notethat the communication is between two telephony devices served by the IPtelephony system. The method 700 begins and proceeds to step S702 wherethe carrier proxy server receives a communication setup request from afirst call cluster. In some embodiments, the received communicationsetup message will have some key information in a header of the setupmessage when the setup message arrives at the first call cluster.

In some embodiments, an element of the first call cluster will haveinserted into a header of the communication setup message an accountidentifier for the account of the telephony device that initiated thecommunication setup message. The element of the first call cluster whichinserts this information into the communication setup message couldobtain the account identifier from a database which cross-references thetelephony devices to the accounts to which they belong, or from someother source. In other instances, the telephony device that generatesthe communication setup message may insert the account identifier forthe account to which it belongs in the header of the communication setupmessage before the communication setup message is sent to the callcluster. Regardless, in some embodiments, the account identifier for theaccount of the initiating telephony device will be present in the headerof the communication setup message when it arrives at the first callcluster.

In alternate embodiments, the carrier proxy server may insert theaccount identifier for the account to which the initiating telephonydevice belongs into the communication setup message when thecommunication setup message arrives at the carrier proxy server. Theaccount identifier for the account to which the initiating telephonybelongs may be obtained from a database which cross-references thetelephony devices to their accounts.

In step S704, the carrier proxy server determines if the communicationis directed to customer of the IP telephony system. As noted above inconnection with the method illustrated in FIG. 6, this could beaccomplished by consulting one or more databases

If the result of step S704 is a determination that the communicationsetup request is directed to a telephony device that is not serviced bythe IP telephony system, the method proceeds to step S706, and thecommunication setup message is directed to a third party telephonysystem that is capable of sending the communication setup request to thecorrect telephony device.

If the result of step S704 is a determination that the communicationsetup message is directed to a telephony device serviced by the IPtelephony system, the method proceeds to step S708 where the carrierproxy server inserts into a header of the communication setup message anaccount identifier for the account of the telephony device to which thecommunication setup request is directed. The account number for thetelephony device to which the communication setup message is directedcan be obtained from databases that are either locally present in thecarrier proxy server, or which are available to the carrier proxyserver. The account identifier for the telephony device to which thecommunication setup message is directed could be inserted into the sameheader portion of the setup request message that contains the accountidentifier for the telephony device that initiated the communicationsetup message, or into another header portion of the setup message.Then, in step S710, the carrier proxy server sends the communicationsetup request to the call cluster which serves the telephony device towhich the communication setup request is directed.

When the second call cluster receives the communication setup request,an element in the second call cluster forwards the communication setuprequest on to the telephony device to which it is addressed. Thetelephony device that receives the communication setup request sends anacknowledgment message back to that element of the second call cluster.The element of the second call cluster that receives the acknowledgementmessage then sends an acknowledgment message back to the carrier proxyserver. In step S712 of the method, the carrier proxy server sends anacknowledgment message back to the element of the first call clusterwhich initially sent the communication setup request to the carrierproxy server. All of these acknowledgment messages will include, in oneor more header fields, the account identifier for the initiatingtelephony device and the account identifier for the telephony device towhich the communication setup request was directed. As a result, theelement of the first call cluster which forwarded the communicationsetup request to the carrier proxy server ultimately will be informed ofboth account identifiers.

Because all elements which participate in routing the communicationsetup request to the telephony device to which the communication setuprequest is directed are informed of the account identifiers for bothtelephony devices, all elements involved in routing the communicationsetup request can generate CDRs which include the account identifiersfor both telephony devices. And including the account identifiers forboth telephony devices in the CDRs allows a billing unit of the IPtelephony system to later determine that the CDRs relate to acommunication which was between two telephony devices serviced by the IPtelephony system, and a corresponding rate is applied to the call forbilling purposes.

FIG. 8 illustrates steps of an alternate method of routing acommunication setup request which also may result in all elementsinvolved in routing the communication setup request being informed ofthe account identifiers for both the initiating telephony device and thetelephony device to which the communication setup request is directed.The method 800 begins and proceeds to step S802 where the carrier proxyserver receives a communication setup request from a first call cluster.Here again, the communication setup request may already include anaccount identifier for the telephony device that initiated thecommunication setup request. In alternate embodiments, the carrier proxyserver may insert the account identifier for the telephony device thatinitiated the communication setup request into a header of thecommunication setup request.

In step S804, the carrier proxy server determines if the communicationis directed to customer of the IP telephony system. If the result ofstep S804 is a determination that the communication setup request isdirected to a telephony device that is not serviced by the IP telephonysystem, the method proceeds to step S806, and the communication setuprequest is directed to a third party telephony system that is capable ofsending the communication setup request to the correct telephony device.

If the result of step S804 is a determination that the communicationsetup request is directed to a telephony device serviced by the IPtelephony system, the method proceeds to step S808 where the carrierproxy server inserts into a header of the communication setup request anaccount identifier for the account of the telephony device to which thecommunication setup request is directed. The account identifier for thetelephony device to which the communication setup request is directedcould be inserted into the same header portion of the setup request thatcontains the account identifier for the telephony device that initiatedthe communication setup request, or into another header portion of thesetup request. Then, in step S810, the carrier proxy server sends thecommunication setup request to a second call cluster which serves thetelephony device to which the communication setup request is addressed.

In step S812, the carrier proxy server sends a message to the element ofthe first call cluster which forwarded the communication setup requestto the carrier proxy server. This message includes the accountidentifier of the telephony device to which the communication setuprequest is directed. This ensures that the element of the first callcluster which participated in routing the communication setup request isinformed of the account identifier for the telephony device to which thesetup request is directed. Thus, the element of the first call clusterthat routed the setup request is able to include this information in anyCDRs that it generates relating to the communication. The element of thefirst call cluster could also pass this information on the telephonydevice that initiated the communication setup request.

In some embodiments, the message that is sent in step S812 from thecarrier proxy server to the element of the first call cluster thatinitially forwarded the communication setup request is an acknowledgmentmessage. In alternate embodiments, the message is a separate messagethat is merely intended to inform the element of the first call clusterof the account identifier for the telephony device to which the setuprequest is directed.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

While the invention has been described in connection with what ispresently considered to be the most practical and preferred embodiment,it is to be understood that the invention is not to be limited to thedisclosed embodiment, but on the contrary, is intended to cover variousmodifications and equivalent arrangements included within the spirit andscope of the appended claims.

What is claimed is:
 1. A method performed by a proxy server of anInternet protocol (IP) telephony system for routing a communicationsetup message, comprising: receiving a communication setup message atthe proxy server that is received from a first call cluster of the IPtelephony system, the communication setup message having been generatedin connection with the setup of a telephony communication requested by afirst customer of the IP telephony system, the communication setupmessage including an account identifier associated with the firstcustomer which identifies an account of the first customer which couldbe charged for the cost of the requested communication; determining ifthe requested communication is directed to a second customer of the IPtelephony system; routing the communication setup message to a secondcall cluster of the IP telephony system when the requested communicationis determined to be directed to a second customer of the IP telephonysystem and inserting an account identifier associated with the secondcustomer into the communication setup message before the communicationsetup message is routed to the second call cluster, the accountidentifier associated with the second customer identifying an accountwhich could be charged for the cost of communications conducted by thesecond customer; and routing the communication setup message to a secondtelephony system when the requested communication is determined not tobe directed to a second customer of the IP telephony system.
 2. Themethod of claim 1, wherein determining if the requested communication isdirected to a second customer of the IP telephony system comprisesdetermining if a destination identifier in the setup message is includedin a list of identifiers associated with customers of the IP telephonysystem.
 3. The method of claim 2, wherein determining if a destinationidentifier in the setup message is included in a list of identifiersassociated with customers of the IP telephony system comprisesperforming a lookup in a local cache of the proxy server.
 4. The methodof claim 2, wherein determining if a destination identifier in the setupmessage is included in a list of identifiers associated with customersof the IP telephony system comprises determining if a destinationtelephone number in the setup message is included in a list of telephonenumbers associated with customers of the IP telephony system.
 5. Themethod of claim 1, wherein the account identifier associated with thefirst customer is contained within a header of the setup message.
 6. Themethod of claim 1, wherein the account identifier associated with thesecond customer is inserted into a header of the setup message.
 7. Themethod of claim 1, wherein the account identifier associated with thefirst customer is present in a portion of a header of the setup message,and wherein the account identifier associated with the second customeris inserted into the same portion of the header of the setup messagethat contains the account identifier associated with the first customer.8. The method of claim 1, further comprising sending an acknowledgementmessage to the first call cluster, wherein the acknowledgment messageincludes the account identifier associated with the first customer andthe account identifier associated with the second customer.
 9. Themethod of claim 8, wherein the account identifier associated with thefirst customer and the account identifier associated with the secondcustomer are in the same portion of a header of the acknowledgmentmessage.
 10. The method of claim 1, further comprising: receiving anacknowledgment message from the second call cluster of the IP telephonysystem, the acknowledgment message including the account identifierassociated with the second customer; and sending an acknowledgementmessage to the first call cluster, wherein the acknowledgment messageincludes the account identifier associated with the first customer andthe account identifier associated with the second customer.
 11. Themethod of claim 10, wherein the account identifier associated with thefirst customer and the account identifier associated with the secondcustomer are stored in a header field of the acknowledgment message sentto the first call cluster.
 12. A non-transitory computer readable mediumhaving instructions stored thereon which, when performed by one or moreprocessors of a computer server, cause the computer server to perform amethod of routing a communication setup message, the method comprising:receiving a communication setup message at the computer server that isreceived from a first call cluster of an IP telephony system, thecommunication setup message having been generated in connection with thesetup of a telephony communication requested by a first customer of theIP telephony system, the communication setup message including anaccount identifier associated with the first customer which identifiesan account of the first customer which could be charged for the cost ofthe requested communication; determining if the requested communicationis directed to a second customer of the IP telephony system; routing thecommunication setup message to a second call cluster of the IP telephonysystem when the requested communication is determined to be directed toa second customer of the IP telephony system and inserting an accountidentifier associated with the second customer into the communicationsetup message before the communication setup message is routed to thesecond call cluster, the account identifier associated with the secondcustomer identifying an account which could be charged for the cost ofcommunications conducted by the second customer; and routing thecommunication setup message to a second telephony system when therequested communication is determined not to be directed to a secondcustomer of the IP telephony system.
 13. The non-transitory computerreadable medium of claim 12, wherein determining if the requestedcommunication is directed to a second customer of the IP telephonysystem comprises determining if a destination identifier in the setupmessage is included in a list of identifiers associated with customersof the IP telephony system.
 14. The non-transitory computer readablemedium claim 13, wherein determining if a destination identifier in thesetup message is included in a list of identifiers associated withcustomers of the IP telephony system comprises performing a lookup in alocal cache of the computer server.
 15. The non-transitory computerreadable medium of claim 13, wherein determining if a destinationidentifier in the setup message is included in a list of identifiersassociated with customers of the IP telephony system comprisesdetermining if a destination telephone number in the setup message isincluded in a list of telephone numbers associated with customers of theIP telephony system.
 16. The non-transitory computer readable medium ofclaim 12, wherein the account identifier associated with the firstcustomer is contained within a header of the setup message.
 17. Thenon-transitory computer readable medium of claim 12, wherein the accountidentifier associated with the second customer is inserted into a headerof the setup message.
 18. The non-transitory computer readable medium ofclaim 12, wherein the account identifier associated with the firstcustomer is present in a portion of a header of the setup message, andwherein the account identifier associated with the second customer isinserted into the same portion of the header of the setup message thatcontains the account identifier associated with the first customer. 19.The non-transitory computer readable medium of claim 12, furthercomprising sending an acknowledgement message to the first call cluster,wherein the acknowledgment message includes the account identifierassociated with the first customer and the account identifier associatedwith the second customer.
 20. The non-transitory computer readablemedium of claim 19, wherein the account identifier associated with thefirst customer and the account identifier associated with the secondcustomer are in the same portion of a header of the acknowledgmentmessage.
 21. The non-transitory computer readable medium of claim 12,wherein the method further comprises: receiving an acknowledgmentmessage from the second call cluster of the IP telephony system, theacknowledgment message including the account identifier associated withthe second customer; and sending an acknowledgement message to the firstcall cluster, wherein the acknowledgment message includes the accountidentifier associated with the first customer and the account identifierassociated with the second customer.
 22. The non-transitory computerreadable medium of claim 21, wherein the account identifier associatedwith the first customer and the account identifier associated with thesecond customer are stored in a header field of the acknowledgmentmessage sent to the first call cluster.
 23. A method performed by aproxy server of an Internet protocol (IP) telephony system for routing acommunication setup message, comprising: receiving a communication setupmessage at the proxy server that is received from a first call clusterof the IP telephony system, the communication setup message having beengenerated in connection with the setup of a telephony communicationrequested by a first customer of the IP telephony system, thecommunication setup message including an account identifier associatedwith the first customer which identifies an account of the firstcustomer which could be charged for the cost of the requestcommunication; determining if the requested communication is directed toa second customer of the IP telephony system; routing the communicationsetup message to a second call cluster of the IP telephony system whenthe requested communication is determined to be directed to a secondcustomer of the IP telephony system; sending an acknowledgement messageto the first call cluster when the requested communication is determinedto be directed to a second customer of the IP telephony system, whereinthe acknowledgment message includes the account identifier associatedwith the first customer and an account identifier associated with thesecond customer which identifies an account of the second customer whichcould be charged for the cost of communications conducted by the secondcustomer; and routing the communication setup message to a secondtelephony system when the requested communication is determined not tobe directed to a second customer of the IP telephony system.
 24. Themethod of claim 23, wherein the account identifier associated with thefirst customer and the account identifier associated with the secondcustomer are in the same portion of a header of the acknowledgmentmessage.
 25. The method of claim 23, further comprising receiving anacknowledgment message from the second call cluster of the IP telephonysystem, the acknowledgment message including the account identifierassociated with the second customer.
 26. A non-transitory computerreadable medium having instructions stored thereon which, when performedby one or more processors of a computer server, cause the computerserver to perform a method of routing a communication setup message, themethod comprising: receiving a communication setup message at thecomputer server that is received from a first call cluster of an IPtelephony system, the communication setup message having been generatedin connection with the setup of a telephony communication requested by afirst customer of the IP telephony system the communication setupmessage including an account identifier associated with the firstcustomer which identifies an account of the first customer which couldbe charged for the cost of the requested communication; determining ifthe requested communication is directed to a second customer of the IPtelephony system; routing the communication setup message to a secondcall cluster of the IP telephony system when the requested communicationis determined to be directed to a second customer of the IP telephonysystem; sending an acknowledgement message to the first call clusterwhen the requested communication is determined to be directed to asecond customer of the IP telephony system, wherein the acknowledgmentmessage includes the account identifier associated with the firstcustomer and an account identifier associated with the second customerwhich identifies an account of the second customer which could becharged for the cost of communications conducted by the second customer;and routing the communication setup message to a second telephony systemwhen the requested communication is determined not to be directed to asecond customer of the IP telephony system.
 27. The method of claim 26,wherein the account identifier associated with the first customer andthe account identifier associated with the second customer are in thesame portion of a header of the acknowledgment message.
 28. The methodof claim 26, further comprising receiving an acknowledgment message fromthe second call cluster of the IP telephony system, the acknowledgmentmessage including the account identifier associated with the secondcustomer.